package com.xudu.tourbackend.controller;


import com.xudu.tourbackend.common.DeleteBatchRequest;
import com.xudu.tourbackend.common.Result;
import com.xudu.tourbackend.entity.request.AddRouteRequest;
import com.xudu.tourbackend.entity.request.UpdateRouteRequest;
import com.xudu.tourbackend.entity.vo.RouteVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author xudu
 * @since 2024-06-17
 */
@RequestMapping("/route")
public interface RouteController {

    /**
     * 添加路由信息。
     *
     * @param addRouteRequest 添加路由的请求对象，包含路由的详细信息。
     * @param request HTTP请求对象
     * @return 添加后的路由详情对象。
     */
    @PostMapping("/addRoute")
    Result addRoute(AddRouteRequest addRouteRequest, HttpServletRequest request);

    /**
     * 根据ID查询路由信息。
     *
     * @param id 路由的唯一标识ID。
     * @param request HTTP请求对象
     * @return 查询到的路由详情对象。
     */
    @GetMapping("/searchRouteById")
    Result searchRouteById(int id, HttpServletRequest request);

    /**
     * 根据路由名称查询路由信息。
     *
     * @param routeName 路由的名称。
     * @param request HTTP请求对象
     * @return 查询到的路由详情列表对象。
     */
    @GetMapping("/searchRouteByName")
    Result searchRouteByName(String routeName, HttpServletRequest request);

    /**
     * 根据元素ID查询路由信息。
     * @param elementId 元素ID
     * @return 查询到的路由详情列表对象
     */
    @GetMapping("/searchRouteByElement")
    Result searchRouteByElement(Integer elementId);


    @GetMapping("/searchRouteByIdForMiniprogram")
    Result searchRouteByIdForMiniprogram(int id);
    /**
     * 更新路由信息。
     *
     * @param updateRouteRequest 更新路由的请求对象，包含需要更新的路由信息。
     * @param request HTTP请求对象
     * @return 更新后的路由详情对象。
     */
    @PostMapping("/updateRoute")
    Result updateRoute(UpdateRouteRequest updateRouteRequest, HttpServletRequest request);

    /**
     * 批量删除路由。
     *
     * @param deleteBatchRequest 批量删除的请求对象，包含需要删除的路由ID列表。
     * @param request HTTP请求对象
     * @return 删除的路由数量。
     */
    @PostMapping("/deleteRoute")
    Result deleteRoute(DeleteBatchRequest deleteBatchRequest, HttpServletRequest request);

    /**
     * 审核路由。
     *
     * @param id 路由的唯一标识ID。
     * @param request HTTP请求对象
     * @return 审核结果，成功返回1
     */
    @PostMapping("/auditRoute")
    Result auditRoute(int id, HttpServletRequest request);


}
